home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok84 / reqtools_2.1d / glue.lha / Glue / M2Sprint / VarCallArgs.mod < prev   
Text File  |  1992-02-13  |  1KB  |  57 lines

  1. IMPLEMENTATION MODULE VarCallArgs;
  2.  
  3. FROM SYSTEM IMPORT ADR, ADDRESS;
  4.  
  5. (* This module allows you to create C-style argument lists *)
  6.  
  7.  
  8. (*********************************************************************)
  9. (* Various routines used for variable-length argument lists          *)
  10.  
  11. VAR
  12.   ArgList : ARRAY [0..4] OF LONGCARD;
  13.  
  14.  
  15. PROCEDURE ArgIs(Arg : LONGCARD) : ADDRESS;
  16. (* Pass argument to a C-style routine *)
  17. BEGIN
  18.   ArgList[0] := Arg;
  19.   ArgList[1] := 0;
  20.   RETURN ADR(ArgList);
  21. END ArgIs;
  22.  
  23.  
  24. PROCEDURE ArgIs2(Arg1, Arg2 : LONGCARD) : ADDRESS;
  25. (* Pass 2 arguments *)
  26. BEGIN
  27.   ArgList[0] := Arg1;
  28.   ArgList[1] := Arg2;
  29.   ArgList[2] := 0;
  30.   RETURN ADR(ArgList);
  31. END ArgIs2;
  32.  
  33.  
  34. PROCEDURE ArgIs3(Arg1, Arg2, Arg3 : LONGCARD) : ADDRESS;
  35. (* Pass up to 3 arguments *)
  36. BEGIN
  37.   ArgList[0] := Arg1;
  38.   ArgList[1] := Arg2;
  39.   ArgList[2] := Arg3;
  40.   ArgList[3] := 0;
  41.   RETURN ADR(ArgList);
  42. END ArgIs3;
  43.  
  44.  
  45. PROCEDURE ArgIs4(Arg1, Arg2, Arg3, Arg4 : LONGCARD) : ADDRESS;
  46. (* Pass up to 4 arguments *)
  47. BEGIN
  48.   ArgList[0] := Arg1;
  49.   ArgList[1] := Arg2;
  50.   ArgList[2] := Arg3;
  51.   ArgList[3] := Arg4;
  52.   ArgList[4] := 0;
  53.   RETURN ADR(ArgList);
  54. END ArgIs4;
  55.  
  56.  
  57. END VarCallArgs.